package com.gitee.hermer.engine.jars.core.autoconfigure.annotate;

import java.lang.annotation.Annotation;
import java.lang.annotation.Documented;
import java.lang.annotation.ElementType;
import java.lang.annotation.Retention;
import java.lang.annotation.RetentionPolicy;
import java.lang.annotation.Target;

import org.springframework.beans.factory.BeanFactory;
import org.springframework.context.ApplicationContext;
import org.springframework.context.annotation.Conditional;

import com.gitee.hermer.engine.jars.core.autoconfigure.condition.OnBeanCondition;
import com.gitee.hermer.engine.jars.core.autoconfigure.condition.SearchStrategy;

@Target({ ElementType.TYPE, ElementType.METHOD })
@Retention(RetentionPolicy.RUNTIME)
@Documented
@ConditionalOnEngineApplication
@Conditional(OnBeanCondition.class)
public @interface ConditionalOnEngineBean {

	
	Class<?>[] value() default {};

	
	String[] type() default {};

	
	Class<? extends Annotation>[] annotation() default {};

	
	String[] name() default {};

	
	SearchStrategy search() default SearchStrategy.ALL;

}
